# coding:utf-8
'''
Created on 2011-3-10
解析电话号码。
可以接受的电话号码格式：
800-555-1212 
800 555 1212 
800.555.1212 
(800) 555-1212 
1-800-555-1212 
800-555-1212-1234 
800-555-1212x1234 
800-555-1212 ext. 1234 
work 1-(800) 555.1212 #1234 
解析出其中的区号800，干线号555，电话号1234
@author: Administrator
'''
import re
phonePattern = re.compile(r'^(\d{3})-(\d{3})-(\d{4})$') # 只对xxx-xxx-xxxx格式有效
rs = phonePattern.search('800-555-1212').groups()
print rs
print phonePattern.search('800-555-1212') # 格式变动后就不行了

phonePatter = re.compile(r'''
    (\d{3}) # 区号是三个数字（如：'800'）
    \D*     # 非数字的号码连接符（如：'-'）
    (\d{3}) # 干线号是三个数字（如：'555'）
    \D*     # 非数字的号码连接符（如：'-'）
    (\d{4}) # 电话号码是四个数字（如：'1234'）
    \D*     # 非数字的号码连接符（如：'-'）
    (\d*)   # 分号（如果有的话）是任意多个数字
    $       # 结尾
''', re.VERBOSE); # re.VERBOSE是“松散”正则表达式模式，会忽略正则表达式中的空格与注释
print phonePatter.search('work 1-(800) 555.1222 # 1234').groups()
print phonePatter.search('800-555-1212').groups()